<?php
//include_once 'Classes/ContatoDoCliente.Class.php';
Class Cliente extends TRecord
{
	const TABLENAME='cliente';
	
	private $telefones;	//variavel que guarda um array de telefones do cliente
	
	/*
	 * função set_telefone()
	 * essa função tem como fim adicionar telefones a um contato
	 * @param $telefone= objeto de contatoRegistro como um telfone;
	 */
	public function set_telefone(Contato $telefone){		
		$this->telefones[]=$telefone;
	}
	/*
	 * funçao CarregaTelefones()
	 * esta função faz com que se crie uma nova instancia do registro de contatodocliente 
	 * para fazer a mediação e caregar os telefones do cliente na varivavel de telefone
	 * 
	 */
	private function CarregaTelefones(){
		$contato=new ContatoDoCliente();
		$this->telefones= $contato->CarregaTelefone($this->id);
	}
	/*
	 * função get_telefone
	 * chama a função de Carregar telefones, e retorna em a varivel com os telefones encontrados
	 */
	
		public function get_telefone(){
		$this->CarregaTelefones();
			return $this->telefones;
	}
		public function deletaArrayTelefone(){
			$this->telefones=null;
		}

	


	
	
/*
 * metodo armazena 
 * iremos adicionar a funçãod e garavar telefones no cliente
 * fazndo com que a classe cliente grave nas tabelas contatocliente
 * e contatodocliente
 */
	public function store() {
		parent::store();
		
		if($this->telefones) //verifica se há algum telefone gravado
		{
			foreach ($this->telefones as $telefone) //pra cada telefone gravado
			{
				if ($telefone->id){ //se já tem um ID
					$telefone->store();	//só grava no banco
				}else //se não tiver
				{
				$telefone->store();	//grava no banco
				$c= new ContatoDoCliente(NULL,$this->getLast(), $telefone->getLast());// e cria um para armazenar a relação
				$c->store();
				//$contatos[]=$telefone->getUltimo(); //grava a id que foi salva no banco
				}
			}
		}
}
	
	/**
	 * função deleta()
	 * modificaremos esta função pois quando quisermos deletar um cliente
	 * temos que percorrer a tabelas assosiativa e de telefoens deletando os telefeones e 
	 * a entrada na tabela associativa
	 * 
	 */
	public function delete($id = NULL) {
		$cliente= new Cliente($id);
		if($cliente->get_telefone()) //verifica se há algum telefone gravado
		{
			foreach ($cliente->get_telefone() as $telefone) //pra cada telefone gravado
			{
				$contato= new ContatoDoCliente(); //cria um objeto do tipo tabela assosiativa
				$deletar=$contato->CarregarId($id, $telefone->id); //descobre o numero do id da tabela assosiativa
				$contato->delete($deletar);	//deleta a entrada
				$telefone->delete($telefone->id); //deleta o telefone no contato
				
				}
			}
			parent::delete($id);
		}


}
?>